package io.gitee.sfch.chunmi.dao.system.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.mybatisflex.annotation.Table;
import io.gitee.sfch.chunmi.entity.MutableEntity;
import io.gitee.sfch.chunmi.common.enums.StatusEnum;
import io.gitee.sfch.chunmi.dao.system.enums.SexEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;

/**
 * 系统用户
 */
@Data
@Table("system_user")
@EqualsAndHashCode(callSuper = true)
public class SystemUser extends MutableEntity {

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     * <p>
     * 使用md5进行加密，再加盐
     */
    @JsonIgnore
    private String password;

    /**
     * 姓名
     */
    private String name;

    /**
     * 手机号
     * <p>
     * 20位的可变字符串类型作为手机号，这是在应对未来可能的多种场景下的最佳选择。
     *
     * @see <a href="https://www.kdun.com/ask/946147.html">...</a>
     */
    private String phoneNumber;

    /**
     * 生日
     */
    private LocalDate birthday;

    /**
     * 性别
     * <p>
     * 这里的性别取Sex而非Gender，是因为Sex更具有法律意义，严格二元；
     * 无论是作为管理系统，2B领域，亦或者国内的偏向，命名为Sex都更加合理
     */
    private SexEnum sex;

    /**
     * 状态
     */
    private StatusEnum status;
}
